<h1 id="umask">umask</h1>
<p>用来设置限制新建文件权限的掩码</p>
<h2 id="补充说明">补充说明</h2>
<p><strong>umask命令</strong> 用来设置限制新建文件权限的掩码。当新文件被创建时，其最初的权限由文件创建掩码决定。用户每次注册进入系统时，umask命令都被执行， 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值，新的权限将会把旧的覆盖掉。</p>
<h3 id="语法">语法</h3>
<pre><code class="language-bash">umask(选项)(参数)</code></pre>
<h3 id="选项">选项</h3>
<pre><code class="language-bash">-p：输出的权限掩码可直接作为指令来执行；
-S：以符号方式输出权限掩码。</code></pre>
<h3 id="参数">参数</h3>
<p>权限掩码：指定权限掩码。</p>
<h3 id="实例">实例</h3>
<p>利用umask命令可以指定哪些权限将在新文件的默认权限中被删除。例如，可以使用下面的命令创建掩码，使得组用户的写权限，其他用户的读、写和执行权限都被取消：</p>
<pre><code class="language-bash">umask u=, g=w, o=rwx
</code></pre>
<p>执行该命令以后，对于下面创建的新文件，其文件主的权限未做任何改变，而组用户没有写权限，其他用户的所有权限都被取消。</p>
<p>应注意：操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中，利用它来设置指定的权限，而其余权限则被删除；但是在umask命令中，它将在原有权限的基础上删除指定的权限。</p>
<p>不能直接利用umask命令创建一个可执行的文件，用户只能在其后利用chmod命令使它具有执行权限。假设执行了命令<code>umask u=, g=w, o=rwx</code>，虽然在命令行中，没有删去文件主和组用户的执行权限，但默认的文件权限还是640（即 rw-r—–），而不是750(rwxr-x—）。但是，如果创建的是目录或者通过编译程序创建的一个可执行文件，将不受此限制。在这种情况 下，会设置文件的执行权限。</p>
<p>也可以使用八进制数值来设置mode。由于在umask中所指定的权限是要从文件中删除的，所以，如果该文件原来的初始化权限是777，那么执行命令umask 022以后，该文件的权限将变为755：如果该文件原来的初始化权限是666，那么该文件的权限将变为644。</p>
<p>可以使用下面的命令检查新创建文件的默认权限：</p>
<pre><code class="language-bash">umask -S</code></pre>
<p>选项-S表示以字符形式显示当前的掩码。如果直接输入umask命令，不带任何参数，那么将以八进制形式显示当前的掩码。系统默认的掩码是0022。</p>
<!-- Linux命令行搜索引擎：https://jaywcjlove.github.io/linux-command/ -->
